/**
 * 本类主要面向用户，无论是登录的用户还是未登录的用户。
 */
package com.webshop.service;

import com.webshop.DataDao.GoodsDao;
import com.webshop.DataDao.PictureDao;
import com.webshop.JavaBean.Category;
import com.webshop.JavaBean.Goods;
import com.webshop.JavaBean.Goods_attr;

import java.util.ArrayList;
import java.util.List;

public class UltimateServie {
    GoodsDao gd = new GoodsDao();


    /**
     * 返回单个商品的信息。
     * @param ID
     * @return
     */
    public Goods backGood(int ID) {

        Goods good = gd.backGood(ID+"");
        good.setPicList(gd.backPic(ID));
        return good;
    }

    /**
     * 返回热销商品
     * @return
     */
    public List<Goods> isHot() {
        List<Goods> temp = gd.isHot();
        for (Goods e : temp) {
            e.setPicList(gd.backPic(e.getID()));
        }
            return  temp;
    }

    /**
     * 商品详细的属性设置。
     * 用户查找时，查找的是关键字，返回所有包含关键字的ID，然后根据ID将所包含的商品全都列出来。
     *
     * @return
     */
    public List<Goods> searchProducts(String name,String NumsofProduct , String page ) {
        List<Goods> goods = new ArrayList<>();
        int nums = Integer.parseInt(NumsofProduct);
        int page1 = Integer.parseInt(page);
        try {
            goods = gd.searchGoods(name,nums,page1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        for (Goods e : goods) {
            e.setPicList(gd.backPic(e.getID()));
        }
        return goods;
    }

    /**
     * 返回单个的商品不同属性的信息
     * @param ID
     * @return
     * @throws Exception
     */
    public List<Goods_attr> ProductDetails(String ID)  {
        List<Goods_attr> goods_attrs = gd.backDetailGoods(ID);
        for (Goods_attr a:goods_attrs) {
            a.setPath(gd.backGoodsAttrPic(a.getProductID(),a.getID()));//这里修改了，可能有错。
        }
        return goods_attrs;
    }


    /**
     *按照类别查找商品
     * 返回的都是类别下的商品
     * @param category
     * @return
     */
   public List<Goods> categoryProduct(String category) {
       List<Goods> temp = gd.subProducts(category);
       for (Goods e : temp) {
           e.setPicList(gd.backPic(e.getID()));
       }
       return temp;
    }


    /**
     * 自底向上返回 类别name
     * @param name
     * @return
     */
    public List<Category> categoryInfo(String name)
    {
        String pid = gd.backPId(name);
        return gd.backCategory(pid);
    }

    /**
     * 从商品信息中返回他们的父类们。
     * @param pid
     * @return
     */
    public List<Category> categoryInfo(int pid)
    {
        return gd.backCategory(pid+"");
    }

    /**
     * 返回商品的一个属性。
     * @param ID
     * @return
     */
    public Goods_attr backGoodAttr(String ID) {
        Goods_attr a = gd.backGoodAttr(ID);
        a.setPath(gd.backGoodsAttrPic(a.getProductID(),a.getID()));//按理说每个属性都有对应的自己的图片。
        return a;
    }

    /**
     * 更改库存状态
     * @param ID
     * @param num
     */
    public void changeStock(String ID, String num) {
        gd.changeStock(ID, num);
    }


    /**
     * 返回唯一的一个商品属性
     * @param ID
     * @return
     */
    public Goods_attr onlyGoodsAttr(String ID) {
        Goods_attr a = gd.ga(ID);
        a.setPath(gd.backGoodsAttrPic(a.getProductID(),a.getID()));
        return a;
    }
}
